Peer Production Participation Project – Dota 2 AI Scripting on Steam Workshop

Meng Zhang

2018-05-01

Steam Workshop

Steam Workshop is affiliated to Steam, a digital distribution platform developed by Valve Corporation. It is a central hub of player-created content and tools to publish, organize, and download that content into your games.


A webpage of Steam Workshop

Dota 2 AI scripting


A lot of AI scripts available on Steam Workshop

My project

My project is called Ranked Matchmaking AI. The main developer hopes this script can simulate the experience of playing with human players.


Our project’s homepage

My project


Our project’s GitHub page

My Participation

My Participation

Part of my codes:

----------------------------------------------------------------------------
--  Ranked Matchmaking AI v1.5b 
--  Author: adamqqq     Email:adamqqq@163.com
--  Contributor: zmcmcc Email:mengzhang@utexas.edu
----------------------------------------------------------------------------
--------------------------------------
-- General Initialization
--------------------------------------
local utility = require( GetScriptDirectory().."/utility" ) 
require(GetScriptDirectory() ..  "/ability_item_usage_generic")

local debugmode=false
local npcBot = GetBot()
local Talents ={}
local Abilities ={}
local AbilitiesReal ={}

ability_item_usage_generic.InitAbility(Abilities,AbilitiesReal,Talents) 

local AbilityToLevelUp=
{
    Abilities[3],
    Abilities[1],
    Abilities[1],
    Abilities[3],
    Abilities[3],
    Abilities[4],
    Abilities[3],
    Abilities[2],
    Abilities[2],
    "talent",
    Abilities[2],
    Abilities[4],
    Abilities[2],
    Abilities[1],
    "talent",
    Abilities[1],
    "nil",
    Abilities[4],
    "nil",
    "talent",
    "nil",
    "nil",
    "nil",
    "nil",
    "talent",
}
local TalentTree={
    function()
        return Talents[1]
    end,
    function()
        return Talents[3]
    end,
    function()
        return Talents[5]
    end,
    function()
        return Talents[8]
    end
}

-- check skill build vs current level
utility.CheckAbilityBuild(AbilityToLevelUp)

function AbilityLevelUpThink()
    ability_item_usage_generic.AbilityLevelUpThink2(AbilityToLevelUp,TalentTree)
end

--------------------------------------
-- Ability Usage Thinking
--------------------------------------
local cast={} cast.Desire={} cast.Target={} cast.Type={}
local Consider ={}
local CanCast={utility.NCanCast,utility.NCanCast,utility.NCanCast,utility.UCanCast}
local enemyDisabled=utility.enemyDisabled

My Achievement (Until 4.21)

My Achievement (Until 4.21)

Some guys even complain that the bots are too strong…

My bots got twice kills as real human team did…